﻿using BPMN.Domain;
using BPMN.Domain.Entity.User;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BPMN.DomianShare;
using System.Threading.Tasks;
using BPMN.Application.Contracts.DTO.Request.UserInfo;
using BPMN.Application.Contracts.DTO.Request.Role;
using BPMN.Application.Contracts.DTO.Response.Role;
using BPMN.Application.Contracts.DTO.Response;
using BPMN.Application.Contracts.DTO.Response.Permission;
using BPMN.Application.Contracts.DTO.Request.PerRole;
using BPMN.Application.Contracts.DTO.Response.RolePermission;

namespace BPMN.Application.IService
{
    public interface IRoleAppService : IAppServiceBase<Role>, IScoped
    {
        Task<ResultResponseDto<int>> AddRole(RoleRequstDto entity);
        Task<ResultResponseDto<int>> UpdateRole(RoleRequstDto entity);
        Task<ResultResponseDto<List<RoleShowResponseDto>>> GetRole();
        Task<ResultResponseDto<RoleShowResponseDto>> GetRoleById(int Id);
        Task<ResultResponseDto<int>> AddRolePer(PermissionRoleRequstDtoTwo entity);
        Task<ResultResponseDto<List<RolePermissionResponseShowDto>>> GetRolePermissionByRoleId(int RoleId);
        Task<ResultResponseDto<int>> AddExtend(Extend extend);
        Task<ResultResponseDto<List<Attributes>>> GetAttrbutes();
        Task<ResultResponseDto<int>> Addattribute(Attributes attr);
        Task<ResultResponseDto<List<Extend>>> GetExtend();
    }
}
